package com.inifitness.admin.core.system.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.inifitness.admin.core.system.model.entity.SysConfig;
import com.inifitness.admin.core.system.model.form.ConfigForm;
import com.inifitness.admin.core.system.model.query.ConfigPageQuery;
import com.inifitness.admin.core.system.model.vo.ConfigPageVO;
import com.inifitness.common.model.Option;

/**
 * 参数业务接口层
 *
 * @author sunjinfeng
 * @since 2022/6/3
 */
public interface SysConfigService extends IService<SysConfig> {

  /**
   * 参数分页列表
   *
   * @param queryParams
   * @return
   */
  Page<ConfigPageVO> getConfigPage(ConfigPageQuery queryParams);


  /**
   * 参数下拉列表
   *
   * @return
   */
  List<Option<Long>> listConfigOptions();

  /**
   * @param form
   * @return
   */
  boolean saveConfig(ConfigForm form);

  /**
   * 获取参数表单数据
   *
   * @param configId 参数ID
   * @return {@link ConfigForm} – 参数表单数据
   */
  ConfigForm getConfigForm(Long configId);

  Object getConfigByCode(String code);

  /**
   * 修改参数状态
   *
   * @param configId 参数ID
   * @param status   参数状态(1:启用；0:禁用)
   * @return {@link Boolean}
   */
  boolean updateConfigStatus(Long configId, Integer status);

  /**
   * 批量删除参数
   *
   * @param ids 参数ID，多个使用英文逗号(,)分割
   * @return
   */
  boolean deleteConfigs(String ids);
}
